ViewModel থেকে Model এবং View এর সাথে ডাটা কমিউনিকেশন

Microsoft Technologies - এমভিভিএম (MVVM) ViewModel তৈরি এবং কনফিগারেশন (Creating and Configuring ViewModel) |
164
164

MVVM প্যাটার্নে ViewModel একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এটি Model এবং View এর মধ্যে তথ্য প্রবাহ এবং কমিউনিকেশন পরিচালনা করে। ViewModel ডেটার প্রক্রিয়াকরণ এবং পরিবর্তন পরিচালনা করে, এবং সেই ডেটা View এ উপস্থাপন করার জন্য প্রস্তুত করে। এর পাশাপাশি, এটি Model থেকে ডেটা গ্রহণ করে এবং View এর সঙ্গে ডেটা বাইন্ডিংয়ের মাধ্যমে UI উপাদানগুলির সাথে ডেটার সিঙ্ক্রোনাইজেশন বজায় রাখে।

এখানে ViewModel থেকে Model এবং View এর সাথে ডাটা কমিউনিকেশন সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।


ViewModel থেকে Model এর সাথে ডাটা কমিউনিকেশন

ViewModel এর প্রধান কাজ হল Model থেকে ডেটা সংগ্রহ এবং সেই ডেটাকে View এর জন্য প্রক্রিয়াকরণ করা। যখন ViewModel Model থেকে ডেটা গ্রহণ করে, তখন এটি সাধারণত ডেটা সেবা (service layer) বা ডেটাবেস থেকে ডেটা আনতে Repository বা Data Service ব্যবহার করে।

ViewModel থেকে Model এ ডেটা পাঠানো

  • ViewModel সাধারণত Model এর ডেটা পরিবর্তন করার জন্য মেথড কল করে।
  • যদি View থেকে কিছু ইনপুট আসে (যেমন ফর্ম পূর্ণ করা বা ডেটা পরিবর্তন), তবে ViewModel সেই ইনপুটের ভিত্তিতে Model এ ডেটা আপডেট করে বা সেভ করে।
উদাহরণ:
public class ProductViewModel
{
    private readonly ProductRepository _repository;

    public ProductViewModel(ProductRepository repository)
    {
        _repository = repository;
    }

    public string ProductName { get; set; }
    public decimal ProductPrice { get; set; }

    public void SaveProduct()
    {
        var product = new Product
        {
            Name = ProductName,
            Price = ProductPrice
        };
        
        _repository.AddProduct(product); // Model এ ডেটা সেভ করা
    }
}

এখানে, ProductViewModel ডেটা সেভ করতে ProductRepository কে কল করছে, যা Model (Product) এর ডেটা সেভ করবে।

ViewModel থেকে Model এ ডেটা ফেচিং

ViewModel Model থেকে ডেটা ফেচ করে এবং সেটি View তে প্রদর্শনের জন্য প্রস্তুত করে। Model এর মধ্যে থাকা ডেটা (যেমন ডেটাবেস বা API থেকে প্রাপ্ত ডেটা) ViewModel দ্বারা নিয়ন্ত্রণ এবং প্রক্রিয়াকৃত হয়।

উদাহরণ:
public class ProductViewModel
{
    private readonly ProductRepository _repository;

    public ProductViewModel(ProductRepository repository)
    {
        _repository = repository;
    }

    public ObservableCollection<Product> Products { get; set; }

    public void LoadProducts()
    {
        var productList = _repository.GetAllProducts(); // Model থেকে ডেটা সংগ্রহ
        Products = new ObservableCollection<Product>(productList); // ViewModel-এ ডেটা সন্নিবেশ
    }
}

এখানে, ViewModel ProductRepository এর মাধ্যমে Model থেকে সমস্ত প্রোডাক্টের তথ্য সংগ্রহ করছে এবং Products প্রপার্টির মাধ্যমে সেই ডেটাকে View-এ প্রদর্শন করার জন্য প্রস্তুত করছে।


ViewModel থেকে View এর সাথে ডাটা কমিউনিকেশন (Data Binding)

ViewModel থেকে View এর সাথে ডাটা কমিউনিকেশন মূলত Data Binding এর মাধ্যমে ঘটে। ViewModel এর প্রপার্টিগুলি UI উপাদানগুলির সাথে বাইন্ড করা হয়, যাতে View-এ কোনো পরিবর্তন হলে তা স্বয়ংক্রিয়ভাবে ViewModel-এ প্রভাব ফেলে এবং vice versa। ViewModel-এ থাকা ডেটার পরিবর্তন হলে তা View-এ রিফ্লেক্ট হয় এবং UI-তে পরিবর্তন দেখা যায়।

ViewModel থেকে View এ ডেটা প্রদর্শন

ViewModel এর প্রপার্টি UI উপাদানগুলির সাথে বাইন্ড করে View-এ ডেটা প্রদর্শন করা হয়। ডেটা বাইন্ডিংয়ের মাধ্যমে ViewModel এর প্রপার্টি পরিবর্তিত হলে UI স্বয়ংক্রিয়ভাবে আপডেট হয়।

উদাহরণ:
<!-- XAML File (View) -->
<TextBox Text="{Binding ProductName}" />
<TextBox Text="{Binding ProductPrice}" />
<Button Content="Save" Command="{Binding SaveCommand}" />

এখানে, TextBox এর Text প্রপার্টি ProductName এবং ProductPrice এর সাথে বাইন্ড করা হচ্ছে। ProductName এবং ProductPrice ViewModel-এ থাকতে পারে, এবং যখন এগুলির মান পরিবর্তিত হবে, তখন তা UI-তে (View) স্বয়ংক্রিয়ভাবে আপডেট হবে।

ViewModel থেকে View এ ইন্টারঅ্যাকশন (Command Binding)

ViewModel এর কমান্ড প্রপার্টি View এর অ্যাকশন (যেমন, বাটন ক্লিক) সাথে বাইন্ড করা হয়। Command Binding ব্যবহার করে View থেকে ViewModel এর কমান্ড মেথড কল করা হয়।

উদাহরণ:
public class ProductViewModel
{
    public ICommand SaveCommand { get; private set; }

    public ProductViewModel()
    {
        SaveCommand = new RelayCommand(SaveProduct);
    }

    private void SaveProduct()
    {
        // Save the product logic
    }
}

এখানে, SaveCommand View থেকে Button এর মাধ্যমে কল হবে। যখন ব্যবহারকারী বাটনে ক্লিক করবেন, তখন ViewModel-এ থাকা SaveProduct মেথডটি ট্রিগার হবে।

XAML এর মধ্যে কমান্ড বাইন্ডিং:

<Button Content="Save" Command="{Binding SaveCommand}" />

এখানে, Button এর Command প্রপার্টি SaveCommand এর সাথে বাইন্ড করা হয়েছে, এবং যখন ব্যবহারকারী বাটনটি ক্লিক করবেন, তখন SaveProduct মেথডটি কল হবে।


সারসংক্ষেপ

  • ViewModel হল একটি মধ্যস্থতাকারী যা Model এবং View এর মধ্যে ডেটা ট্রান্সফার এবং ইন্টারঅ্যাকশন পরিচালনা করে।
  • ViewModel Model থেকে ডেটা নিয়ে আসে এবং View-এ তা উপস্থাপনযোগ্য ফরম্যাটে রূপান্তর করে।
  • Data Binding ব্যবহার করে ViewModel এবং View এর মধ্যে ডেটার সিঙ্ক্রোনাইজেশন নিশ্চিত করা হয়।
  • Command Pattern ব্যবহার করে View থেকে ViewModel এ ইউজার ইনপুট বা অ্যাকশন পাঠানো হয়, যা বিজনেস লজিক বা ডেটা পরিবর্তন পরিচালনা করে।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion